package request

import (
	"strconv"

	"github.com/gin-gonic/gin"
)

// 分页
type Page struct {
	Limit uint64 `json:"limit" gorm:"not null;default:'10';comment:页长" binding:"required"`
	Page  uint64 `json:"page" gorm:"not null;default:'1';comment:页码"  binding:"required"`
}

// SetDefaults 设置 Page 的默认值
func (p *Page) SetDefaults() {
	if p.Limit == 0 {
		p.Limit = 10 // 默认每页大小
	}
	if p.Page == 0 {
		p.Page = 1 // 默认页码
	}
}

// parsePagination 从请求中解析分页参数并设置到提供的分页结构体中。
func ParsePagination(ctx *gin.Context, page *Page) {
	if limit, err := strconv.ParseUint(ctx.DefaultQuery("limit", "10"), 10, 64); err == nil {
		page.Limit = limit
	} else {
		page.Limit = 10 // 默认值
	}

	if pageNum, err := strconv.ParseUint(ctx.DefaultQuery("page", "1"), 10, 64); err == nil {
		page.Page = pageNum
	} else {
		page.Page = 1 // 默认值
	}
}
